哈囉大家好,我是古古
上一篇文章介紹了 Google Cloud 中的 PaaS 運算服務 - App Engine,所以到目前為止,我們已經看完了 IaaS 和 PaaS 這兩種經典的服務
而這篇文章要介紹的,是有別於 IaaS 和 PaaS 的新概念,即是 FaaS 的服務:Cloud Functions,所以我們就開始吧!
Cloud Functions 是 Google Cloud 中的 FaaS 運算服務,FaaS 的中文翻譯是「函式即服務」或是「功能即服務」,而 FaaS 的概念,即是不讓程式一直運行著,而是當請求來的時候,才快速啟動這個程式,然後當請求一走之後,就馬上 shutdown 這個程式
上面的描述聽起來可能有點抽象,我們可以實際透過一個例子來了解一下:
舉例來說,假設我們開發了一個圖片上傳的功能,那我們可以設計成當使用者觸發圖片上傳時,就馬上啟動一個小程式去進行圖片轉換、或是去生成縮圖...等操作,等到處理好這張圖片之後,這個小程式就可以被關掉了
這就是 FaaS 的概念,就是「馬上啟動、馬上用、馬上關掉」,而不像傳統的 Server 設計,是會持續運行著一個 Server 傻傻的等使用者的請求過來
也因為在 FaaS 的服務中,我們是沒有運行一個 Server 傻傻等著請求過來,因此 FaaS 的服務也可被稱為是 Serverless (無伺服器運算)
而在 Google Cloud 的運算服務中,有兩種運算服務都套用了 FaaS 的概念,分別是這篇文章要介紹的 Cloud Functions、以及後面會介紹到的 Cloud Run
在這兩個服務中,Cloud Functions 算是比較經典的 FaaS 架構,而 Cloud Run 則是有點魔改過後的 FaaS,後續會再介紹他們兩個之間的差別,目前大家只要先知道 Cloud Functions 是比較經典的 FaaS 架構即可
上面有提到,Cloud Functions 是 Google Cloud 中的 FaaS 服務,而 Cloud Functions 的目的, 即是「讓大家開發一個小程式,然後我們可以設定當某個事件發生時,就會去觸發這個小程式執行」,達到 FaaS 服務的效果
把 Cloud Functions 拿來套用上面的那個圖片轉換例子的話,即是我們可以寫一個圖片轉換的小程式,當「使用者上傳圖片」這個事件被觸發時,Cloud Functions 就會去「執行圖片轉換的程式」,而在這個過程中,其實就有 Event-driven(事件驅動)的概念在裡面
補充:Event-driven(事件驅動)的概念,即是「當某事件發生時」,我們「要做什麼事」的運作邏輯,譬如說當門鈴響了我們要開門,事件就是門鈴響,開門是我們聽到門鈴響之後要做的事
Event-driven 滿廣泛地被使用在前端領域中,譬如說當使用者點擊某個按鈕,前端畫面就要隨之變化,這就是 Event-driven 的應用,後端這邊則稍微少見一點,因此大家如果沒碰過這個概念是正常的
而在 Cloud Functions 的官方簡介中就有提到:
「Cloud Functions is a lightweight, event-based, asynchronous compute solution that allows you to create small, single-purpose functions that respond to cloud events without needing to manage a server or a runtime environment.」
這一段的重點在「event-based」和「single-purpose functions」
由於 Cloud Functions 的目的在於讓我們撰寫「輕量化、單一功能的小程式」,因此免除了 Server 架設環境的步驟,所以在部署上就可以更快的完成
由於 Cloud Functions 的目的在於「維持最輕量化、解決單一功能的小程式」,而為了能夠更輕量化且快速的運行程式,因此會限制大家開發的程式語言
目前 Cloud Functions 只支援 Javascript、Node.js、Python、Go,並且這些程式最後都會被 Google Cloud 用 Node.js 的環境拿去 run,因此比較重型的語言 (ex: Java) 就沒辦法使用 Cloud Functions 的服務
這篇文章先介紹了 Cloud Functions 是什麼,接著也介紹了 Cloud Functions 的 Event-driven 特性,並且也有重新介紹了一次 FaaS 服務的概念,希望可以透過這些例子,讓大家更了解 FaaS 這種服務的理念
不過說實話我自己在實際的工作中也沒有真的使用過 FaaS 的服務,因此沒有辦法跟大家比較到底使用 FaaS 有沒有比 IaaS/PaaS 好,如果後續有機會使用 FaaS 服務來開發的話,會再補充相關的心得上來
那麼介紹完 Google Cloud 中的 IaaS (Compute Engine)、PaaS (App Engine)、FaaS (Cloud Functions) 這三大經典服務之後,下一篇文章要介紹的,就是兼具了 IaaS 和 PaaS 優點的運算服務:Google Kubernetes Engine,那我們就下一篇文章見啦!